using System;
using System.Collections.Generic;
using System.Text;

using HHo_Model;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;



namespace HHo_Negocio
{
    public class GestorTblParametros
    {
        private List<E_Parametros> ListaParametros;
        private E_Parametros Parametro;

        SqlDataReader oRdr;
        SqlParameter oPrm;
               
        public List<E_Parametros> ListaParametroPorGrupo(int codGrupo)
        {
            oPrm = new SqlParameter("@COD_GRUPO", SqlDbType.SmallInt);
            oPrm.Direction = ParameterDirection.Input;
            oPrm.Value = codGrupo;

            ListaParametros = new List<E_Parametros>();

            oRdr = SQLHelper.ExecuteReader(SQLHelper.ObtieneCadenaConexion(), System.Data.CommandType.StoredProcedure, "[HHSS_PARAM_POR_GPO]", oPrm);

            if (oRdr != null)
            {
                while (oRdr.Read())
                {
                    Parametro = new E_Parametros();

                    if (oRdr.GetValue(0) != DBNull.Value)
                        Parametro.ParametroID = oRdr.GetInt32(0);

                    if (oRdr.GetValue(1) != DBNull.Value)
                    Parametro.ParametroGrupo = oRdr.GetInt16(1);

                if (oRdr.GetValue(2) != DBNull.Value)
                    Parametro.ParametroCodigo = oRdr.GetString(2);

                if (oRdr.GetValue(3) != DBNull.Value)
                    Parametro.ParametroValor = oRdr.GetString(3);

                if (oRdr.GetValue(4) != DBNull.Value)
                    Parametro.ParametroEstado = oRdr.GetString(4);
                                        
                ListaParametros.Add(Parametro);
                }
            }
            return ListaParametros;
        }

        public string ObtenerValorParamtroPorID(int IdParametro)
        {
            E_Parametros oParam = ConsultarParametroPorID(IdParametro);
            return oParam.ParametroValor;
        }

        public int ObtenerParamID(int IDGrupo, string CodParam)
        {            
            SqlCommand oCmd = new SqlCommand();
            SqlConnection oCn = new SqlConnection(SQLHelper.ObtieneCadenaConexion());
            oCn.Open();
            oCmd.Connection = oCn;
            oCmd.CommandText = "SELECT DBO.GETPARAMID(" + IDGrupo + ",'" + CodParam + "')";
            return ((int)oCmd.ExecuteScalar());
            //oRdr = oCmd.ExecuteReader(CommandBehavior.CloseConnection());            
            //return oParam.ParametroValor;
        }

        

        public string ObtenerCodigoParamtroPorID(int IdParametro)
        {
            E_Parametros oParam = ConsultarParametroPorID(IdParametro);
            return oParam.ParametroCodigo;
        }

        public E_Parametros ConsultarParametroPorID(int IdParametro)
        {
            SqlDataReader oRdr;
            E_Parametros oParametro;
            SqlParameter oPrm = new SqlParameter("@IDPARAM", SqlDbType.Int);
            oPrm.Direction = ParameterDirection.Input;
            oPrm.Value = IdParametro;

            oRdr = SQLHelper.ExecuteReader(SQLHelper.ObtieneCadenaConexion(), CommandType.StoredProcedure, "HHSS_CONSULTA_PARAM_ID", oPrm);
            oParametro = new E_Parametros();
            using (oRdr)
            {
                if (oRdr != null)
                {
                    while (oRdr.Read())
                    {                        
                        if(oRdr.GetValue(0) != DBNull.Value)
                            oParametro.ParametroID = oRdr.GetInt32(0);

                        if(oRdr.GetValue(1) != DBNull.Value)
                            oParametro.ParametroGrupo = oRdr.GetInt16(1);

                        if(oRdr.GetValue(2) != DBNull.Value)
                            oParametro.ParametroCodigo = oRdr.GetString(2);

                        if(oRdr.GetValue(3) != DBNull.Value)
                            oParametro.ParametroValor = oRdr.GetString(3);

                        if (oRdr.GetValue(4) != DBNull.Value)
                            oParametro.ParametroEstado = oRdr.GetString(4);
                    }
                }
            }
            return oParametro;
        }
        

    }
}
